5
תגובות
Yii WIdget
פתח
משתמש_217309
,
זה הקוד widget
זה הview
זה הקריאה לwidget
מה הבעיה? הwidget לא מקבל משתנים שהורשתי לו
איך אני מוריש משתנים לwidget?
<?php
class CatgorRender extends CWidget
{
public $catgor;
public $num;
public function run()
{
$this->render('catgor',array('num'=>$num, 'catgor'=>$catgor));
}
}
?>
class CatgorRender extends CWidget
{
public $catgor;
public $num;
public function run()
{
$this->render('catgor',array('num'=>$num, 'catgor'=>$catgor));
}
}
?>
זה הview
<?php
print Html::openTag('div',array('class'=>(($num%2 == 1)?'right':'left').'_catgor'));
print Html::link(Html::image(
'static/catgories/'.$catgor->id.'.jpg',
'Catgor',
array('width'=>300, 'height'=>150)
), 'catgor.html?id='.$catgor->id);
print Html::closeTag('div');
?>
print Html::openTag('div',array('class'=>(($num%2 == 1)?'right':'left').'_catgor'));
print Html::link(Html::image(
'static/catgories/'.$catgor->id.'.jpg',
'Catgor',
array('width'=>300, 'height'=>150)
), 'catgor.html?id='.$catgor->id);
print Html::closeTag('div');
?>
זה הקריאה לwidget
$num = 1;
foreach($this->catgories as $catgor) {
if($num % 2 != 0 && $num != 1)
print "</div><div class='catgor_list'>";
$this->widget('application.components.CatgorRender',array('num'=>$num,'catgor'=>$catgor));
if($num == count($this->catgories)) print '</div>';
$num++;
} # end foreach
foreach($this->catgories as $catgor) {
if($num % 2 != 0 && $num != 1)
print "</div><div class='catgor_list'>";
$this->widget('application.components.CatgorRender',array('num'=>$num,'catgor'=>$catgor));
if($num == count($this->catgories)) print '</div>';
$num++;
} # end foreach
מה הבעיה? הwidget לא מקבל משתנים שהורשתי לו
איך אני מוריש משתנים לwidget?
5 תשובות
אתה ניגש למשתנים של המחלקה ככה:
$this->render('catgor',array('num'=>$this->num, 'catgor'=>$this->catgor));
בנוסף יש כמה דברים שכדאי לחשוב על לשנות:
זה אומר שכל הקוד הזה של "קריאה לwidget" יושב לך ב view כלשהו. שהז לא טוב. לא אמור להיות כל כך הרבה קוד ב וויו.
שנית הווידגט מסוגל לספור בעצמו שורות ולשים הפרדה אחרי כל אלמנט. למה שלא תעביר לווידג'ט רק את רשימת הקטגוריות והוא כבר יסתדר משם לבד ?
ענה
משתמש_217309
ב
19 למאי 2012
#
אבל אם אני ארצה להציג קטגוריה בנפרד?
כאילו רק אחת
תעשה view נפרד של קטגוריה אחת ושהווידגט ירנדר הרבה כאלה.
אם במקום אחר תרצה להציג רק אחת - תפעיל את הוויו הזה לבד.
ענה
משתמש_217309
ב
19 למאי 2012
#
מה שאתה מתכוון זה שהרינדור של CatgoryRender יעשה בתוכו רינדור לקובץ אחר (של הקטגוריה) הרבה פעמים?